using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace produccion.clases
{

   public class CLSMAEPRVP : ObservableObject
    {
        MDOgeneral mod = new MDOgeneral();

        #region Metodos basicos tabla

        public List<CLSMAEPRVP> listaProv()
        {
            try
            {
                string query = "select CODPRV_PRV,NOMPRV_PRV,DIRPRV_PRV,CODCIU_PRV,TELPRV_PRV,FAXPRV_PRV,NITPRV_PRV,REPPRV_PRV,CONPRV_PRV,EMAIL_PRV,ORIPRV_PRV,REGVTA_PRV,BANCO_PRV,CUENTA_PRV,FECCOD_PRV,FECACE_PRV,FECFIN_PRV,ESTADO_PRV,TIPPRV_PRV,FICTEC_PRV,CONPAG_PRV from MAEPRVP order by NOMPRV_PRV";
                DataTable val = mod.consulta(query);
                List<CLSMAEPRVP> lisProv = new List<CLSMAEPRVP>();
                foreach (DataRow r in val.Rows)
                {
                    lisProv.Add(new CLSMAEPRVP
                    {
                        CODPRV_PRV = r["CODPRV_PRV"].ToString().Trim(),
                        NOMPRV_PRV = r["NOMPRV_PRV"].ToString().Trim(),
                        DIRPRV_PRV = r["DIRPRV_PRV"].ToString().Trim(),
                        CODCIU_PRV = r["CODCIU_PRV"].ToString().Trim(),
                        TELPRV_PRV = r["TELPRV_PRV"].ToString().Trim(),
                        FAXPRV_PRV = r["FAXPRV_PRV"].ToString().Trim(),
                        NITPRV_PRV = r["NITPRV_PRV"].ToString().Trim(),
                        REPPRV_PRV = r["REPPRV_PRV"].ToString().Trim(),
                        CONPRV_PRV = r["CONPRV_PRV"].ToString().Trim(),
                        EMAIL_PRV = r["EMAIL_PRV"].ToString().Trim(),
                        ORIPRV_PRV = r["ORIPRV_PRV"].ToString().Equals("N") ? "Nacional" : "Importado",
                        REGVTA_PRV = r["REGVTA_PRV"].ToString().Equals("S") ? "Simplificado" : "Comun",
                        BANCO_PRV = r["BANCO_PRV"].ToString().Trim(),
                        CUENTA_PRV = r["CUENTA_PRV"].ToString().Trim(),
                        FECCOD_PRV =Convert.ToDateTime(r["FECCOD_PRV"]),
                        FECACE_PRV = Convert.ToDateTime(r["FECACE_PRV"]),
                        FECFIN_PRV =Convert.ToDateTime( r["FECFIN_PRV"]),
                        ESTADO_PRV = r["ESTADO_PRV"].ToString().Equals("A") ? "Activo" : "Inactivo",
                        TIPPRV_PRV = r["TIPPRV_PRV"].ToString().Equals("N") ? "Normal" : "Critico",
                        FICTEC_PRV = r["FICTEC_PRV"].ToString().Trim(),
                        CONPAG_PRV = r["CONPAG_PRV"].ToString().Trim()
                    });
                }
                return lisProv;
            }
            catch (Exception e) { throw e; }
        }
        public void consultar()
        {
            try
            {
                string query = "select CODPRV_PRV,NOMPRV_PRV,DIRPRV_PRV,CODCIU_PRV,TELPRV_PRV,FAXPRV_PRV,NITPRV_PRV,REPPRV_PRV,CONPRV_PRV,EMAIL_PRV,ORIPRV_PRV,REGVTA_PRV,BANCO_PRV,CUENTA_PRV,FECCOD_PRV,FECACE_PRV,FECFIN_PRV,ESTADO_PRV,TIPPRV_PRV,FICTEC_PRV,CONPAG_PRV from MAEPRVP where (CODPRV_PRV='" + CODPRV_PRV + "')";
                DataTable val = mod.consulta(query);
                if (val.Rows.Count > 0)
                {
                    this.CODPRV_PRV = val.Rows[0]["CODPRV_PRV"].ToString();
                    this.NOMPRV_PRV = val.Rows[0]["NOMPRV_PRV"].ToString();
                    this.DIRPRV_PRV = val.Rows[0]["DIRPRV_PRV"].ToString();
                    this.CODCIU_PRV = val.Rows[0]["CODCIU_PRV"].ToString();
                    this.TELPRV_PRV = val.Rows[0]["TELPRV_PRV"].ToString();
                    this.FAXPRV_PRV = val.Rows[0]["FAXPRV_PRV"].ToString();
                    this.NITPRV_PRV = val.Rows[0]["NITPRV_PRV"].ToString();
                    this.REPPRV_PRV = val.Rows[0]["REPPRV_PRV"].ToString();
                    this.CONPRV_PRV = val.Rows[0]["CONPRV_PRV"].ToString();
                    this.EMAIL_PRV = val.Rows[0]["EMAIL_PRV"].ToString();
                    this.ORIPRV_PRV = val.Rows[0]["ORIPRV_PRV"].ToString();
                    this.REGVTA_PRV = val.Rows[0]["REGVTA_PRV"].ToString();
                    this.BANCO_PRV = val.Rows[0]["BANCO_PRV"].ToString();
                    this.CUENTA_PRV = val.Rows[0]["CUENTA_PRV"].ToString();
                    this.FECCOD_PRV = Convert.ToDateTime(val.Rows[0]["FECCOD_PRV"]);
                    this.FECACE_PRV = Convert.ToDateTime(val.Rows[0]["FECACE_PRV"]);
                    this.FECFIN_PRV =Convert.ToDateTime(val.Rows[0]["FECFIN_PRV"]);
                    this.ESTADO_PRV = val.Rows[0]["ESTADO_PRV"].ToString();
                    this.TIPPRV_PRV = val.Rows[0]["TIPPRV_PRV"].ToString();
                    this.FICTEC_PRV = val.Rows[0]["FICTEC_PRV"].ToString();
                    this.CONPAG_PRV = val.Rows[0]["CONPAG_PRV"].ToString();

                    EXISTE = true;
                    CAMBIO = false;
                }
                else
                {
                    EXISTE = false;
                }

            }
            catch (Exception e) { throw e; }

        }
        public int eliminar()
        {
            try
            {
                string query = "delete from MAEPRVP where (CODPRV_PRV='" + CODPRV_PRV + "')";
                return mod.comando(query);
            }
            catch (Exception e) { throw e; }
        }
        public int actualizar()
        {
            try
            {
                string query = "update MAEPRVP set NOMPRV_PRV='" + NOMPRV_PRV + "',DIRPRV_PRV='" + DIRPRV_PRV + "',CODCIU_PRV='" + CODCIU_PRV + "',TELPRV_PRV='" + TELPRV_PRV + "',FAXPRV_PRV='" + PrivStr_ValidarDatos(FAXPRV_PRV," ") + "',NITPRV_PRV='" + NITPRV_PRV + "',REPPRV_PRV='" + REPPRV_PRV + "',CONPRV_PRV='" + CONPRV_PRV + "',EMAIL_PRV='" + EMAIL_PRV + "',ORIPRV_PRV='" + ORIPRV_PRV + "',REGVTA_PRV='" + REGVTA_PRV + "',BANCO_PRV='" + BANCO_PRV + "',CUENTA_PRV='" + CUENTA_PRV + "',FECCOD_PRV='" + FECCOD_PRV.ToShortDateString() + "',FECACE_PRV='" + FECACE_PRV.ToShortDateString() + "',FECFIN_PRV='" + FECFIN_PRV.ToShortDateString() + "',ESTADO_PRV='" + ESTADO_PRV + "',TIPPRV_PRV='" + TIPPRV_PRV + "',FICTEC_PRV='" + FICTEC_PRV + "',CONPAG_PRV='" + CONPAG_PRV + "' where (CODPRV_PRV='" + CODPRV_PRV + "')";
                return mod.comando(query);
            }
            catch (Exception e) { throw e; }
        }
        public int insertar()
        {
            try
            {
                string query = "insert into MAEPRVP (CODPRV_PRV,NOMPRV_PRV,DIRPRV_PRV,CODCIU_PRV,TELPRV_PRV,FAXPRV_PRV,NITPRV_PRV,REPPRV_PRV,CONPRV_PRV,EMAIL_PRV,ORIPRV_PRV,REGVTA_PRV,BANCO_PRV,CUENTA_PRV,FECCOD_PRV,FECACE_PRV,FECFIN_PRV,ESTADO_PRV,TIPPRV_PRV,FICTEC_PRV,CONPAG_PRV) values ('" + CODPRV_PRV + "','" + NOMPRV_PRV + "','" + DIRPRV_PRV + "','" + CODCIU_PRV + "','" + PrivStr_ValidarDatos(TELPRV_PRV, " ") + "','" + PrivStr_ValidarDatos(FAXPRV_PRV, " ") + "','" + NITPRV_PRV + "','" + REPPRV_PRV + "','" + CONPRV_PRV + "','" + EMAIL_PRV + "','" + ORIPRV_PRV + "','" + REGVTA_PRV + "','" + BANCO_PRV + "','" + CUENTA_PRV + "','" + FECCOD_PRV.ToShortDateString() + "','" + FECACE_PRV.ToShortDateString() + "','" + FECFIN_PRV.ToShortDateString() + "','" + ESTADO_PRV + "','" + TIPPRV_PRV + "','" + FICTEC_PRV + "','" + CONPAG_PRV + "')";
                return mod.comando(query);
            }
            catch (Exception e) { throw e; }
        }
        private string PrivStr_ValidarDatos(string StrDato, string StrValorPorDefecto)
        {
            string StrDatoRetornado = "";

            if (StrDato == "" || StrDato == null)
            {
                StrDatoRetornado = StrValorPorDefecto;
            }
            else
            {
                StrDatoRetornado = StrDato;
            }
            return StrDatoRetornado;
        }
        #endregion

        #region otros
        public Boolean existe()
        {
            try
            {
                string query = "select  coalesce(count(CODPRV_PRV),0) from MAEPRVP where (CODPRV_PRV='" + CODPRV_PRV + "')";
                DataTable val = mod.consulta(query);
                if (val.Rows[0][0].ToString().Equals("0"))
                {
                    return false;
                }
                return true;
            }
            catch (Exception e) { throw e; }
        }
        public DataTable buscar()
        {
            try
            {
                string query = "select CODPRV_PRV as Codigo,NOMPRV_PRV as Nombre from  MAEPRVP where ";

                if (NOMPRV_PRV != "")
                {
                    query = query + "UPPER(NOMPRV_PRV) like '%" + NOMPRV_PRV.ToUpper() + "%' and ";
                }
                query = query.Remove(query.Length - 4).Trim() + " Order by NOMPRV_PRV asc";
                return mod.consulta(query);
            }
            catch (Exception e) { throw e; }
        }
        #endregion

        #region  Propiedades tabla MAEPRVP
        private string _CODPRV_PRV;
        public string CODPRV_PRV
        {
            get { return _CODPRV_PRV; }
            set
            {
                _CODPRV_PRV = value;
                RaisePropertyChangedEvent("CODPRV_PRV");
            }
        }
        private string _NOMPRV_PRV;
        public string NOMPRV_PRV
        {
            get { return _NOMPRV_PRV; }
            set
            {
                if (_NOMPRV_PRV != value) { CAMBIO = true; }
                _NOMPRV_PRV = value;
                RaisePropertyChangedEvent("NOMPRV_PRV");
            }
        }
        private string _DIRPRV_PRV;
        public string DIRPRV_PRV
        {
            get { return _DIRPRV_PRV; }
            set
            {
                if (_DIRPRV_PRV != value) { CAMBIO = true; }
                _DIRPRV_PRV = value;
                RaisePropertyChangedEvent("DIRPRV_PRV");
            }
        }
        private string _CODCIU_PRV;
        public string CODCIU_PRV
        {
            get { return _CODCIU_PRV; }
            set
            {
                if (_CODCIU_PRV != value) { CAMBIO = true; }
                _CODCIU_PRV = value;
                RaisePropertyChangedEvent("CODCIU_PRV");
            }
        }
        private string _TELPRV_PRV;
        public string TELPRV_PRV
        {
            get { return _TELPRV_PRV; }
            set
            {
                if (_TELPRV_PRV != value) { CAMBIO = true; }
                _TELPRV_PRV = value;
                RaisePropertyChangedEvent("TELPRV_PRV");
            }
        }
        private string _FAXPRV_PRV;
        public string FAXPRV_PRV
        {
            get { return _FAXPRV_PRV; }
            set
            {
                if (_FAXPRV_PRV != value) { CAMBIO = true; }
                _FAXPRV_PRV = value;
                RaisePropertyChangedEvent("FAXPRV_PRV");
            }
        }
        private string _NITPRV_PRV;
        public string NITPRV_PRV
        {
            get { return _NITPRV_PRV; }
            set
            {
                if (_NITPRV_PRV != value) { CAMBIO = true; }
                _NITPRV_PRV = value;
                RaisePropertyChangedEvent("NITPRV_PRV");
            }
        }
        private string _REPPRV_PRV;
        public string REPPRV_PRV
        {
            get { return _REPPRV_PRV; }
            set
            {
                if (_REPPRV_PRV != value) { CAMBIO = true; }
                _REPPRV_PRV = value;
                RaisePropertyChangedEvent("REPPRV_PRV");
            }
        }
        private string _CONPRV_PRV;
        public string CONPRV_PRV
        {
            get { return _CONPRV_PRV; }
            set
            {
                if (_CONPRV_PRV != value) { CAMBIO = true; }
                _CONPRV_PRV = value;
                RaisePropertyChangedEvent("CONPRV_PRV");
            }
        }
        private string _EMAIL_PRV;
        public string EMAIL_PRV
        {
            get { return _EMAIL_PRV; }
            set
            {
                if (_EMAIL_PRV != value) { CAMBIO = true; }
                _EMAIL_PRV = value;
                RaisePropertyChangedEvent("EMAIL_PRV");
            }
        }
        private string _ORIPRV_PRV;
        public string ORIPRV_PRV
        {
            get { return _ORIPRV_PRV; }
            set
            {
                if (_ORIPRV_PRV != value) { CAMBIO = true; }
                _ORIPRV_PRV = value;
                RaisePropertyChangedEvent("ORIPRV_PRV");
            }
        }
        private string _REGVTA_PRV;
        public string REGVTA_PRV
        {
            get { return _REGVTA_PRV; }
            set
            {
                if (_REGVTA_PRV != value) { CAMBIO = true; }
                _REGVTA_PRV = value;
                RaisePropertyChangedEvent("REGVTA_PRV");
            }
        }
        private string _BANCO_PRV;
        public string BANCO_PRV
        {
            get { return _BANCO_PRV; }
            set
            {
                if (_BANCO_PRV != value) { CAMBIO = true; }
                _BANCO_PRV = value;
                RaisePropertyChangedEvent("BANCO_PRV");
            }
        }
        private string _CUENTA_PRV;
        public string CUENTA_PRV
        {
            get { return _CUENTA_PRV; }
            set
            {
                if (_CUENTA_PRV != value) { CAMBIO = true; }
                _CUENTA_PRV = value;
                RaisePropertyChangedEvent("CUENTA_PRV");
            }
        }
        private DateTime _FECCOD_PRV=DateTime.Today;
        public DateTime FECCOD_PRV
        {
            get {
                return _FECCOD_PRV;
            }
            set
            {
                if (_FECCOD_PRV != value) { CAMBIO = true; }
                _FECCOD_PRV = value;
                RaisePropertyChangedEvent("FECCOD_PRV");
            }
        }
        private DateTime _FECACE_PRV=DateTime.Today;
        public DateTime FECACE_PRV
        {
            get { return _FECACE_PRV; }
            set
            {
                if (_FECACE_PRV != value) { CAMBIO = true; }
                _FECACE_PRV = value;
                RaisePropertyChangedEvent("FECACE_PRV");
            }
        }
        private DateTime _FECFIN_PRV = DateTime.Today;
        public DateTime FECFIN_PRV
        {
            get { return _FECFIN_PRV; }
            set
            {
                if (_FECFIN_PRV != value) { CAMBIO = true; }
                _FECFIN_PRV = value;


                RaisePropertyChangedEvent("FECFIN_PRV");
            }
        }
        private string _ESTADO_PRV;
        public string ESTADO_PRV
        {
            get { return _ESTADO_PRV; }
            set
            {
                if (_ESTADO_PRV != value) { CAMBIO = true; }
                _ESTADO_PRV = value;
                RaisePropertyChangedEvent("ESTADO_PRV");
            }
        }
        private string _TIPPRV_PRV;
        public string TIPPRV_PRV
        {
            get { return _TIPPRV_PRV; }
            set
            {
                if (_TIPPRV_PRV != value) { CAMBIO = true; }
                _TIPPRV_PRV = value;
                RaisePropertyChangedEvent("TIPPRV_PRV");
            }
        }
        private string _FICTEC_PRV;
        public string FICTEC_PRV
        {
            get { return _FICTEC_PRV; }
            set
            {
                if (_FICTEC_PRV != value) { CAMBIO = true; }
                _FICTEC_PRV = value;
                RaisePropertyChangedEvent("FICTEC_PRV");
            }
        }
        private string _CONPAG_PRV;
        public string CONPAG_PRV
        {
            get { return _CONPAG_PRV; }
            set
            {
                if (_CONPAG_PRV != value) { CAMBIO = true; }
                _CONPAG_PRV = value;
                RaisePropertyChangedEvent("CONPAG_PRV");
            }
        }
        private Boolean _CAMBIO = false;
        public Boolean CAMBIO
        {
            get { return _CAMBIO; }
            set
            {
                _CAMBIO = value;
                RaisePropertyChangedEvent("CAMBIO");
            }
        }
        private Boolean _EXISTE = false;
        public Boolean EXISTE
        {
            get { return _EXISTE; }
            set
            {
                _EXISTE = value;
                RaisePropertyChangedEvent("EXISTE");
            }
        }
        #endregion

    }
}
